package com.th.supcom.pds.internal.api.phamapply;

import java.util.List;

import com.th.supcom.pds.domain.pojo.InpPhamApplyDetail;
import com.th.supcom.pds.domain.pojo.InpPhamApplyDetailSummary;
import com.th.supcom.pds.domain.pojo.InpPhamApplyMaster;
import com.th.supcom.pds.domain.pojo.InpPhamDispenseDetail;
import com.th.supcom.pds.domain.pojo.InpPhamDispenseResult;
import com.th.supcom.pds.domain.vo.InpPhamApplyDetailVO;
import com.th.supcom.pds.domain.vo.InpPhamDispenseDetailVO;

/**
 * 住院摆药请领单服务
 * 
 * @author 王剑
 */
public interface PhamDispenseService
{

    /**
     * 通过请领单据号和发药药房查询住院药品请领明细
     * 
     * @param applyNo 请领单据号
     * @param dispensary 药房组织机构代码
     * @return
     */
    public List <InpPhamApplyDetailVO> obtainApplyDetailByApplyNoAndDispensary (String applyNo, String dispensary);

    /**
     * 药房收单执行请领单
     * 
     * @param applyList 请领明细
     * @param inpPhamApplyMaster 请领主表
     * @param operator 操作员
     * @param dispensary 当前发药药房
     */
    public void execPhamApplySheet (List <InpPhamApplyDetailVO> applyList, InpPhamApplyMaster inpPhamApplyMaster, String operator, String dispensary);
    /**
     * 请领撤销查询
     * @param inpPhamApplyDetail 传输对象.
     * @return InpPhamApplyDetailVO 结果对象.
     */
    public List <InpPhamApplyDetailVO> findInpPhamApplyCancelListByCondition (InpPhamApplyDetailVO inpPhamApplyDetail);
   
    /**
     * 药房收单撤销请领单
     * @param inpPhamApplyMaster 请领主表
     * @param operator 操作员
     * @param dispensary 当前发药药房
     */
    public void cancelPhamApplySheet (InpPhamApplyMaster inpPhamApplyMaster);

    /**
     * 住院摆药核对发药
     * 
     * @param dispenseList
     * @param operator 操作员
     * @param dispensary 当前发药药房
     */
    public void verifyDispenseDetail (InpPhamDispenseResult inpPhamDispenseResult, String operator, String dispensary);

    /**
     * 核对发药查询护理单元
     * 
     * @param dispensary
     * @return
     */
    public List <InpPhamDispenseDetail> findInpPhamDispenseNurse (String dispensary);

    /**
     * 核对发药查询摆药明细
     * 
     * @param inpPhamDispenseDetail
     * @return
     */
    public InpPhamDispenseResult findInpPhamDispenseByExample (InpPhamDispenseDetailVO inpPhamDispenseDetailVO);
    /**
     * 通过传输对象对应值查询表记录.（药房摆药查询）
     * 
     * @param inpPhamDispenseDetail 传输对象.
     * @return InpPhamDispenseDetail 结果对象.
     */
    public List <InpPhamDispenseDetailVO> findInpPhamDispenseDetail(InpPhamDispenseDetail inpPhamDispenseDetail);
    /**
     * 查询单个药品可用的药房
     * 
     * @param summary
     * @return
     */
    public List <InpPhamApplyDetailSummary> findAvailableDispensary (InpPhamApplyDetailSummary summary);
    /**
     * 通过传输对象对应值查询表记录.(药房摆药查询)
     * 
     * @param inpPhamApplyDetail 传输对象.
     * @return InpPhamApplyDetailVO 结果对象.
     */
    public List <InpPhamApplyDetailVO> findInpPhamApplyInfo (InpPhamApplyDetail inpPhamApplyDetail);
    /** 公司版权信息. */
    public static final String copyright = "Copyright 2014, XuNuo Corporation";

    /** 提交路径. */
    public static final String SCC_BRANCH = "$URL$";

    /** 提交日期. */
    public static final String SCC_LAST_MODIFICATION_DATE = "$Date$";

    /** 最终修改人员. */
    public static final String SCC_LAST_MODIFIER_NAME = "$Author$";

    /** 最终版本号. */
    public static final String SCC_REVISION = "$Revision$";
}
